Skip to main content

对象:任务

符号: _cds_icon_task_editor.png

您在对象中配置任务。您可以配置优先级、具有时间行为的类型和监视程序。你也可以添加 PROGRAM 呼叫。

该对象位于设备树下方的设备树中 任务配置

选项卡:配置

对象: _cds_icon_task_editor.png 任务

优先级

可能的值:0.. 31,其中 0 是最高优先级

任务组

已分配 任务组 可以分配给多核中的特定处理器内核

示例: IEC 任务

注意:任务组显示在设备树中任务后的方括号中。

重要

在 Linux 中使用运行时系统时,任务组和优先级之间存在固定的依赖关系。有关更多信息,请参阅: Linux 系统上的任务优先级映射

类型

类型: _cds_icon_task_periodic.png 循环的

任务的处理是循环完成的。

输入字段: 间隔

必填项

任务重启的时间跨度(任务周期时间)

  • 作为时间定义,格式为 TIME#

    示例: t#200ms

  • 作为一个数字

    示例: 200

    注意:该数字将自动以以下格式显示 TIME# 当输入字段再次聚焦时。

注意:任务与所需任务周期时间的偏差在运行时以周期性抖动的形式显示在 选项卡:监控 选项卡。

间隔的时间单位

如果在中仅指定了数字而不是时间定义 间隔 输入字段,则此处选择的单位决定时间维度。

示例: ms

注意:以 µs 为单位的任务周期时间始终显示为数字。

类型: _cds_icon_task_event_internal.png 事件

任务的处理在事件变量的上升沿开始以事件触发。

输入字段: 事件

全局变量(布尔类型)

变量值从 0 切换到 1 后,任务立即启动。

类型: _cds_icon_task_event_external.png 外部

任务的处理在事件变量的上升沿开始以事件触发。

清单框: 事件

包含目标系统相关事件的列表(布尔类型)

注意:目标系统决定列表框中支持和提供哪些事件。

提示:不要与系统事件混淆

间隔

中的时间定义 TIME# 格式化或作为带有时间单位的数字

注意:仅在事件需要时间定义时可用

类型 自由运行

任务的处理在程序启动时以及运行结束后,在一定等待时间后自动以连续循环方式重新启动

重要:完成运行后,需要等待一定的时间才能再次执行任务。持续时间是最后一个周期持续时间的百分比。

注意:您未定义循环时间。

类型 地位

任务的处理开始时由事件变量触发

输入字段: 事件

全局变量(布尔类型)

当变量具有状态 TRUE,任务开始自由运行。任务运行直到变量获得值 FALSE

注意:变量通常在任务本身中重置。与事件任务不同,这种方式不会错过任何事件。当事件发生时,调度程序必须保存一个旧值,并且该值更改的频率可能比检查的频率更高。因此,如果事件变量更改为 TRUE 仅在短时间内,调度程序可能无法检测到此变化。这可以通过状态任务来避免。状态变量设置为 TRUE 由其他任务执行,并由状态任务重置。这确保每次切换到 TRUE

重要

对于现场总线,固定周期矩阵是确保确定行为所必需的。因此,您不应该使用 类型 随心所欲 用于总线循环任务。

重要

请注意处理类型之间的以下区别 状态事件: 如果给定事件产生 TRUE,然后是类型为的任务的启动条件 状态 已完成。相比之下,类型为任务的开始 事件 需要从以下位置切换事件 FALSETRUE。如果任务调度器的采样率太低,则事件的上升趋势可能不会被注意到

重要

设置任务周期时间时,需要确定当前正在使用哪个总线系统。例如,CAN 总线系统中的任务周期必须与当前设置的波特率和总线中使用的帧数相匹配。此外,为心跳、节点保护和同步设置的时间应始终是任务周期时间的倍数。否则,CAN 帧可能会丢失。

有关更多信息,请参阅: 选项卡:监控

看门狗

定义任务的时间监控。如果目标系统支持高级监视程序配置,则可以在设备描述中预定义以下设置

  • 上限和下限

  • 默认监视器时间

  • 时间以百分比指定

默认监视程序设置取决于设备。

启用

_cas_icon_option_activated.png:监视程序处于活动状态。

如果任务超过了监视程序当前设定的时间,则任务将暂停并显示错误状态(异常)。任务中出现错误的应用程序及其子应用程序也已暂停。这样,受影响应用程序的所有任务也将暂停。然后是当前定义的 灵敏度 也被考虑在内。

如果你激活该选项 更新 I/OPLC 设置 那么 PLC 的 CODESYS 将输出重置为定义的默认值。

. 可能的情况:
  • 多次连续超时:

    灵敏度:0、1 — 周期 1 出现异常

    灵敏度:2 — 周期 2 中出现异常

    灵敏度:n — 周期 n 中的异常

  • 单次超时:如果当前周期的循环时间长于(时间 * 灵敏度),则出现异常。示例:time=T #10ms,灵敏度=5(即一次性任务运行时间超过 50 毫秒即出现异常

时间(例如 t #200ms)

看门狗时间

定义(和 灵敏度) 任务的监视器;相应的描述 启用

视目标系统而定,如果可能,监视时间跨度以任务间隔的百分比表示。在这种情况下,该设备的列表框被禁用并显示 %

灵敏度

数字

定义(与监视器一起)任务的监视程序;描述为 启用

提示

使用库中的函数 CmpIecTask.library,您可以针对特定 PLC 周期停用监视器。这对于因初始化而需要更多时间的周期很有用。

539. 示例

停用/重新激活监视程序:

VAR
hIecTask : RTS_IEC_HANDLE;
END_VAR

hIecTask := IecTaskGetCurrent(0);
IecTaskDisableWatchdog(hIecTask); //Watchdog disabled
...
IecTaskEnableWatchdog(hIecTask); //Watchdog enabled

看门狗在初始化之前被停用 IecTaskDisableWatchDog 循环的其余部分,并在下一个循环中自动重新激活。

看门狗可以在初始化后重新激活 IecTaskEnableWatchDog.然后看门狗已经在周期的剩余时间内重新激活(看门狗时间窗口再次从头开始)。



功能块的初始化发生在 FB_Init 方法不受此影响。但是由于通信超时,有 < 30 秒的限制。自 V3.5 SP18 起不再存在此时间限制,因为在线服务是异步执行的。

提示

当 IEC 任务的执行时间超过监视程序时间时,将触发 IEC 任务的正常监视程序。

当任务根本没有启动时,就会触发 “省略周期” 监视程序。当任务在 < 的最大值内根本不执行任何循环时,就会出现这种情况时间 * 灵敏度> 或 <2 * 间隔>。原因可能是其他任务挤满了人,或者调度程序出现故障,无法再启用

程序调用

POU (POU 带有类型的对象 PROGRAM) 由任务连续调用

POU 的调用顺序对应于此处自上而下配置的呼叫顺序。

_cds_icon_task_add.png 添加通话

打开输入助手。选择一个 PROGRAM POU。当你点击 好吧 要退出输入助手,它会作为新呼叫添加到下面的列表中。

_cds_icon_task_delete.png 移除通话

移除通话

_cds_icon_task_edit.png更改通话

打开所选呼叫的输入助手。选择另一个 PROGRAM POU。当您单击时,呼叫会发生变化 好吧 退出输入助手。

_cds_icon_task_moveup.png 向上移动

_cds_icon_task_movedown.png 向下移动

在列表中向上或向下移动呼叫的位置。调用顺序在运行时会相应更改。

_cds_icon_task_openpou.png 打开 POU

打开 POU 编辑器,其中包含声明和实现 PROGRAM POU